﻿using System;
using System.Collections.Generic;
using Autodesk.Revit.DB;
using YJKRevitStairs.StairsModel.CommonUnit;
using YJKRevitStairs.StairsModel.Manage;

namespace YJKRevitStairs.StairsModel.DataInfos
{
	public class DoubleBranchThreeRunStairs : BaseCommonStairs
	{
		public DoubleBranchThreeRunStairs()
		{
			base.m_sName = "双分三跑楼梯";
		}

		public DoubleBranchThreeRunStairs(StairsCreator Creator)
		{
			base.m_sName = "双分三跑楼梯";
			this.m_StairsCreator = Creator;
		}

		public override void DrawStairs()
		{
			DoubleBranceThreeRunStairsCreator doubleBranceThreeRunStairsCreator = this.m_StairsCreator as DoubleBranceThreeRunStairsCreator;
			if (doubleBranceThreeRunStairsCreator != null)
			{
				doubleBranceThreeRunStairsCreator.CreateDoubleBranchThreeRunStaris(this);
			}
		}

		public double getStairsWidth()
		{
			return this.m_SideLandData.Length * 2.0 + this.m_TwoRunLeftData.RunLength * 2.0 + this.m_MiddleLandData.Width;
		}

		public void TransFormRailPoints()
		{
			foreach (BaseRaillingData baseRaillingData in this.m_listRail)
			{
				baseRaillingData.m_ptStart = Geometry.TransformPoint(baseRaillingData.m_ptStart, base.m_Transform);
			}
		}

		public void TransFormOutSupportPoints()
		{
			List<XYZ> list = new List<XYZ>();
			foreach (XYZ point in this.m_listOutSupportPoints)
			{
				XYZ item = Geometry.TransformPoint(point, base.m_Transform);
				list.Add(item);
			}
			if (list.Count > 0)
			{
				this.m_listOutSupportPoints.Clear();
				this.m_listOutSupportPoints.AddRange(list);
			}
		}

		public LineRunData m_LeftRunData { get; set; }

		public LineRunData m_MidRunData { get; set; }

		public LineRunData m_RightRunData { get; set; }

		public LineRunData m_TwoRunLeftData { get; set; }

		public LineRunData m_TwoRunRightData { get; set; }

		public BaseBeamData m_BeamData { get; set; }

		public AngleLandingData m_MiddleLandData { get; set; }

		public AngleLandingData m_SideLandData { get; set; }

		public XYZ m_ptPosition { get; set; }

		public double m_dBottomElevation { get; set; }

		public double m_dLevelValue { get; set; }

		public double m_dBottomOffset { get; set; }

		public double m_dTopOffset { get; set; }

		public FloorType m_FloorType { get; set; }

		public bool m_bIsCenterUp { get; set; }

		public List<string> m_arLandWidth { get; set; }

		private StairsCreator m_StairsCreator;

		public List<XYZ> m_listOutSupportPoints = new List<XYZ>();
	}
}
